Start-of-route map navigation with suppression of off-route feedback

ABSTRACT

A map navigation tool provides a start-of-route buffer area in which off-route feedback (e.g., audio or visual warnings or alerts) can be suppressed in some circumstances. For example, a mobile computing device implements a map navigation tool that can output off-route feedback when the user strays from a route, but also can suppress off-route feedback when the user is within a start-of-route buffer area. Off-route feedback can continue to be suppressed until some other event, such as the user leaving the start-of-route buffer area, occurs. Off-route feedback can be suppressed even if the user is not within a start-of-route buffer area, such as when the map navigation tool generates a route when the user is at an initial location that is far away from any part of the route and then joins the route later (e.g., at the start location or downstream from the start location).

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional PatentApplication No. 61/489,223, entitled “MAP NAVIGATION NEAR ROUTETERMINUS,” filed on May 23, 2011, which is incorporated herein byreference, and U.S. Provisional Patent Application No. 61/489,227,entitled “MAP NAVIGATION WITH START-OF-ROUTE BUFFER AREA,” filed on May23, 2011, which is incorporated herein by reference.

BACKGROUND

Computer-aided map navigation tools have achieved widespread acceptance.A user can find an address or directions with map navigation toolsavailable at various Web sites. Some software programs allow a user tonavigate over a map, zooming in towards the ground or zooming out awayfrom the ground, or moving between different geographical positions. Incars, GPS devices have provided rudimentary road navigation for years.More recently, map navigation software for cellular telephones and othermobile computing devices has allowed users to zoom in, zoom out, andmove around a map that shows details about geographical features, town,city, county and state locations, roads, and buildings.

With a turn-by-turn navigation system, a list of directions for a routeis organized as multiple items corresponding to steps or instructionsalong the route. The multiple items are typically presented in order toa user as the user travels along the route. Usually, the currentlocation of the user is shown, and the user can be alerted of anupcoming turn or other instruction. While such systems work well in somescenarios, in other scenarios the presentation of directions can beoverly complicated.

SUMMARY

Techniques and tools are described for map navigation with suppressionof off-route feedback. The disclosed methods, apparatus, and systemsshould not be construed as limiting in any way. Instead, the presentdisclosure is directed toward all novel and nonobvious features andaspects of the various disclosed embodiments, alone and in variouscombinations and subcombinations with one another. Furthermore, anyfeatures or aspects of the disclosed embodiments can be used in variouscombinations and subcombinations with one another. The disclosedmethods, apparatus, and systems are not limited to any specific aspector feature or combination thereof, nor do the disclosed embodimentsrequire that any specific advantage be present or problem be solved.

In described examples, to simplify navigation near a start location of aroute, a map navigation tool provides a start-of-route buffer area inwhich off-route feedback (e.g., audio or visual warnings or alerts) canbe suppressed in some circumstances. For example, a mobile computingdevice (e.g., a smart phone) implements a map navigation tool that canoutput off-route feedback when the user strays from a route defined bythe tool (e.g., by taking a wrong turn), but also can suppress theoff-route feedback when the user is within a start-of-route buffer areaassociated with the route. This can help to avoid unnecessary,misleading, or annoying off-route feedback in many navigation scenarios,such as where a user must make several turns to leave a parking areabefore continuing along a route. The off-route feedback can continue tobe suppressed for a length of time (e.g., until some other event, suchas the user leaving the start-of-route buffer area, occurs). As anotherexample, off-route feedback can be suppressed even if the user is notwithin a start-of-route buffer area, such as when the map navigationtool generates (e.g., in response to user input) a route when the useris at an initial location that is far away from any part of the route,and the user then joins the route later (e.g., at the start location ordownstream from the start location).

The foregoing and other objects, features, and advantages of theinvention will become more apparent from the following detaileddescription, which proceeds with reference to the accompanying figures.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating an example mobile computingdevice in conjunction with which techniques and tools described hereinmay be implemented.

FIG. 2 is a block diagram illustrating an example software architecturefor a map navigation tool that renders map views and list views.

FIGS. 3 a and 3 b are diagrams illustrating features of a generalizedmap view and generalized list view rendered using a map navigation tool.

FIGS. 4 a-4 c are example screenshots illustrating user interfacefeatures of list views rendered using a map navigation tool.

FIGS. 5 a-5 e are example representations of a route with an associatedarrival area and end-of-route buffer area defined in a map navigationtool.

FIG. 6 is a flowchart showing a generalized technique for map navigationusing a terminus buffer area.

FIG. 7 is a flowchart showing a generalized technique for selectivelysuppressing off-route feedback using a terminus buffer area.

FIG. 8 is a flowchart showing a generalized technique for map navigationusing an end-of-route buffer area and an arrival area.

FIG. 9 is a flowchart showing a detailed technique for map navigationusing an end-of-route buffer area and an arrival area.

FIG. 10 is a flowchart showing a technique for outputting and thenselectively suppressing off-route feedback based on whether an updatedlocation is within an end-of-route buffer area.

FIGS. 11 a-11 d are diagrams showing example representations of a routewith an associated start-of-route buffer area defined in a mapnavigation tool.

FIGS. 12 and 13 are flowcharts showing techniques for performing mapnavigation using a start-of-route buffer area.

FIG. 14 is a flowchart showing a generalized technique for performingmap navigation in which off-route feedback is suppressed for a computingdevice located outside a start-of-route buffer area.

FIG. 15 is a flowchart showing a generalized technique for performingmap navigation in which off-route feedback is suppressed during movementfrom an off-route location to an on-route location

FIG. 16 is a flowchart showing a detailed technique for performing mapnavigation in which off-route feedback is suppressed during movementfrom an off-route location to an on-route location.

DETAILED DESCRIPTION

Techniques and tools are described for map navigation along a routedefined by a map navigation tool. A map navigation tool can useoff-route feedback to alert a user when the user has moved off-route.For example, a map navigation tool can use audio alerts (e.g., a warningtone or a verbal warning such as “turn around,” “off-route,” or“recalculating”) or visual alerts for off-route feedback. In describedexamples, to simplify navigation near a terminus of a route (e.g., nearan end location or a start location), a terminus buffer area (e.g., anend-of-route buffer area or a start-of-route buffer area) is provided ina map navigation tool to allow suppression of off-route feedback (e.g.,audio or visual warnings or alerts) in some circumstances, such as whena mobile computing device that implements the map navigation tool entersthe terminus buffer area. The off-route feedback can continue to besuppressed for a length of time (e.g., until some other event, such as auser leaving the terminus buffer area, occurs). A map navigation toolcan disable off-route warnings when a user crosses an arrival thresholdand enters an arrival area. The arrival area can be within anend-of-route buffer area. Off-route feedback can be suppressed for auser even if the user is not within a start-of-route buffer area, suchas when the user generates a route at an initial location that is faraway from any part of the route and then joins the route later (e.g., atthe start location or at some other point on the route downstream fromthe start location).

The techniques and tools described herein can be used individually or incombination with each other or other techniques and tools.

Example Mobile Computing Device

FIG. 1 depicts a detailed example of a mobile computing device (100)capable of implementing the techniques and solutions described herein.The mobile device (100) includes a variety of optional hardware andsoftware components, shown generally at (102). In general, a component(102) in the mobile device can communicate with any other component ofthe device, although not all connections are shown, for ease ofillustration. The mobile device can be any of a variety of computingdevices (e.g., cell phone, smartphone, handheld computer, laptopcomputer, notebook computer, tablet device, netbook, media player,Personal Digital Assistant (PDA), camera, video camera, etc.) and canallow wireless two-way communications with one or more mobilecommunications networks (104), such as a Wi-Fi, cellular, or satellitenetwork.

The illustrated mobile device (100) includes a controller or processor(110) (e.g., signal processor, microprocessor, ASIC, or other controland processing logic circuitry) for performing such tasks as signalcoding, data processing, input/output processing, power control, and/orother functions. An operating system (112) controls the allocation andusage of the components (102) and support for one or more applicationprograms (114) such as a map navigation tool that implements one or moreof the innovative features described herein. In addition to mapnavigation software, the application programs can include common mobilecomputing applications (e.g., telephony applications, emailapplications, calendars, contact managers, web browsers, messagingapplications), or any other computing application.

The illustrated mobile device (100) includes memory (120). Memory (120)can include non-removable memory (122) and/or removable memory (124).The non-removable memory (122) can include RAM, ROM, flash memory, ahard disk, or other well-known memory storage technologies. Theremovable memory (124) can include flash memory or a Subscriber IdentityModule (SIM) card, which is well known in Global System for MobileCommunications (GSM) communication systems, or other well-known memorystorage technologies, such as “smart cards.” The memory (120) can beused for storing data and/or code for running the operating system (112)and the applications (114). Example data can include web pages, text,images, sound files, video data, or other data sets to be sent to and/orreceived from one or more network servers or other devices via one ormore wired or wireless networks. The memory (120) can be used to store asubscriber identifier, such as an International Mobile SubscriberIdentity (IMSI), and an equipment identifier, such as an InternationalMobile Equipment Identifier (IMEI). Such identifiers can be transmittedto a network server to identify users and equipment.

The mobile device (100) can support one or more input devices (130),such as a touchscreen (132) (e.g., capable of capturing finger tapinputs, finger gesture inputs, or keystroke inputs for a virtualkeyboard or keypad), microphone (134) (e.g., capable of capturing voiceinput), camera (136) (e.g., capable of capturing still pictures and/orvideo images), physical keyboard (138), buttons and/or trackball (140)and one or more output devices (150), such as a speaker (152) and adisplay (154). Other possible output devices (not shown) can includepiezoelectric or other haptic output devices. Some devices can servemore than one input/output function. For example, touchscreen (132) anddisplay (154) can be combined in a single input/output device.

The mobile device (100) can provide one or more natural user interfaces(NUIs). For example, the operating system (112) or applications (114)can comprise speech-recognition software as part of a voice userinterface that allows a user to operate the device (100) via voicecommands. For example, a user's voice commands can be used to provideinput to a map navigation tool.

A wireless modem (160) can be coupled to one or more antennas (notshown) and can support two-way communications between the processor(110) and external devices, as is well understood in the art. The modem(160) is shown generically and can include, for example, a cellularmodem for communicating at long range with the mobile communicationnetwork (104), a Bluetooth-compatible modem (164), or a Wi-Fi-compatiblemodem (162) for communicating at short range with an externalBluetooth-equipped device or a local wireless data network or router.The wireless modem (160) is typically configured for communication withone or more cellular networks, such as a GSM network for data and voicecommunications within a single cellular network, between cellularnetworks, or between the mobile device and a public switched telephonenetwork (PSTN).

The mobile device can further include at least one input/output port(180), a power supply (182), a satellite navigation system receiver(184), such as a Global Positioning System (GPS) receiver, sensors (186)such as an accelerometer, a gyroscope, or an infrared proximity sensorfor detecting the orientation and motion of device (100), and forreceiving gesture commands as input, a transceiver (188) (for wirelesslytransmitting analog or digital signals) and/or a physical connector(190), which can be a USB port, IEEE 1394 (FireWire) port, and/or RS-232port. The illustrated components (102) are not required orall-inclusive, as any of the components shown can be deleted and othercomponents can be added.

The mobile device can determine location data that indicates thelocation of the mobile device based upon information received throughthe satellite navigation system receiver (184) (e.g., GPS receiver).Alternatively, the mobile device can determine location data thatindicates location of the mobile device in another way. For example, thelocation of the mobile device can be determined by triangulation betweencell towers of a cellular network. Or, the location of the mobile devicecan be determined based upon the known locations of Wi-Fi routers in thevicinity of the mobile device. The location data can be updated everysecond or on some other basis, depending on implementation and/or usersettings. Regardless of the source of location data, the mobile devicecan provide the location data to map navigation tool for use in mapnavigation. For example, the map navigation tool periodically requests,or polls for, current location data through an interface exposed by theoperating system (112) (which in turn may get updated location data fromanother component of the mobile device), or the operating system (112)pushes updated location data through a callback mechanism to anyapplication (such as the map navigation tool) that has registered forsuch updates. A user of the mobile device can be given notice of thecollection of location data (e.g., via an alert provided by the mapnavigation tool) and the opportunity to provide or deny consent tocollection of location data. Consent can be given in the form of opt-outconsent, in which the user can take an affirmative action to preventcollection of location data before it is collected, or opt-in consent,in which the user can take an affirmative action to give consent tocollection of location data before the data is collected.

With the map navigation tool and/or other software or hardwarecomponents, the mobile device (100) implements the technologiesdescribed herein. For example, the processor (110) can update a map viewand/or list view in reaction to user input and/or changes to the currentlocation of the mobile device. As a client computing device, the mobiledevice (100) can send requests to a server computing device, and receivemap images, distances, directions, other map data, search results orother data in return from the server computing device.

The mobile device (100) can be part of an implementation environment inwhich various types of services (e.g., computing services) are providedby a computing “cloud.” For example, the cloud can comprise a collectionof computing devices, which may be located centrally or distributed,that provide cloud-based services to various types of users and devicesconnected via a network such as the Internet. Some tasks (e.g.,processing user input and presenting a user interface) can be performedon local computing devices (e.g., connected devices) while other tasks(e.g., storage of data to be used in subsequent processing) can beperformed in the cloud.

Although FIG. 1 illustrates a mobile device (100), more generally, thetechniques and solutions described herein can be implemented withdevices having other screen capabilities and device form factors, suchas a desktop computer, a television screen, or device connected to atelevision (e.g., a set-top box or gaming console). Services can beprovided by the cloud through service providers or through otherproviders of online services. Thus, the map navigation techniques andsolutions described herein can be implemented with any of the connecteddevices as a client computing device. Similarly, any of variouscomputing devices in the cloud or a service provider can perform therole of server computing device and deliver map data or other data tothe connected devices.

Example Software Architecture for Rendering of Map Data and Directions

FIG. 2 shows an example software architecture (200) for a map navigationtool (210) that renders views of a map depending on user input andlocation data. A client computing device (e.g., smart phone or othermobile computing device) can execute software organized according to thearchitecture (200) to render map views, list views of directions for aroute, or other views.

The architecture (200) includes a device operating system (OS) (250) andmap navigation tool (210). In FIG. 2, the device OS (250) includescomponents for rendering (e.g., rendering visual output to a display,generating voice output for a speaker), components for networking,components for location tracking, and components for speech recognition.The device OS (250) manages user input functions, output functions,storage access functions, network communication functions, and otherfunctions for the device. The device OS (250) provides access to suchfunctions to the map navigation tool (210).

A user can generate user input that affects map navigation. The userinput can be tactile input such as touchscreen input, button presses orkey presses or voice input. The device OS (250) includes functionalityfor recognizing taps, finger gestures, etc. to a touchscreen fromtactile input, recognizing commands from voice input, button input orkey press input, and creating messages that can be used by mapnavigation tool (210) or other software. The interpretation engine (214)of the map navigation tool (210) listens for user input event messagesfrom the device OS (250). The UI event messages can indicate a panninggesture, flicking gesture, dragging gesture, or other gesture on atouchscreen of the device, a tap on the touchscreen, keystroke input, orother UI event (e.g., from voice input, directional buttons, trackballinput). If appropriate, the interpretation engine (214) can translatethe UI event messages from the OS (250) into map navigation messagessent to a navigation engine (216) of the map navigation tool (210).

The navigation engine (216) considers a current view position (possiblyprovided as a saved or last view position from the map settings store(211)), any messages from the interpretation engine (214) that indicatea desired change in view position, map data and location data. From thisinformation, the navigation engine (216) determines a view position andprovides the view position as well as location data and map data in thevicinity of the view position to the rendering engine (218). Thelocation data can indicate a current location (of the computing devicewith the map navigation tool (210)) that aligns with the view position,or the view position can be offset from the current location.

The navigation engine (216) gets current location data for the computingdevice from the operating system (250), which gets the current locationdata from a local component of the computing device. For example, thelocation data can be determined based upon data from a globalpositioning system (GPS), by triangulation between towers of a cellularnetwork, by reference to physical locations of Wi-Fi routers in thevicinity, or by another mechanism.

The navigation engine (216) gets map data for a map from a map datastore (212). In general, the map data can be photographic image data orgraphical data (for boundaries, roads, etc.) at various levels ofdetail, ranging from high-level depiction of states and cites, tomedium-level depiction of neighborhoods and highways, to low-leveldepiction of streets and buildings. Aside from photographic data andgraphical data, the map data can include graphical indicators such asicons or text labels for place names of states, cities, neighborhoods,streets, buildings, landmarks or other features in the map. Aside fromnames, the map data can include distances between features, route points(in terms of latitude and longitude) that define a route between startand end locations, text directions for decisions at waypoints along theroute (e.g., turn at NE 148^(th)), and distances between waypoints alongthe route. The map data can provide additional details for a givenfeature such as contact information (e.g., phone number, Web page,address), reviews, ratings, other commentary, menus, photos, advertisingpromotions, or information for games (e.g., geo-caching, geo-tagging).Links can be provided for Web pages, to launch a Web browser andnavigate to information about the feature.

The organization of the map data depends on implementation. For example,in some implementations, different types of map data (photographic imagedata or graphical surface layer data, text labels, icons, etc.) arecombined into a single layer of map data at a given level of detail. Upto a certain point, if the user zooms in (or zooms out), a tile of themap data at the given level of detail is simply stretched (or shrunk).If the user further zooms in (or zooms out), the tile of map data at thegiven level of detail is replaced with one or more other tiles at ahigher (or lower) level of detail. In other implementations, differenttypes of map data are organized in different overlays that arecomposited during rendering, but zooming in and out are generallyhandled in the same way, with overlapping layers stretched (or shrunk)to some degree, and then replaced with tiles at other layers.

The map data store (212) caches recently used map data. As needed, themap data store (212) gets additional or updated map data from local filestorage or from network resources. The device OS (250) mediates accessto the storage and network resources. The map data store (212) requestsmap data from storage or a network resource through the device OS (250),which processes the request, as necessary requests map data from aserver and receives a reply, and provides the requested map data to themap data store (212).

For example, to determine directions for a route, the map navigationtool (210) provides a start location (typically, the current location ofthe computing device with the map navigation tool (210)) and an endlocation for a destination (e.g., an address or other specific location)as part of a request for map data to the OS (250). The device OS (250)conveys the request to one or more servers, which provide surface layerdata, route points that define a route, text directions for decisions atwaypoints along the route, distances between waypoints along the route,and/or other map data in reply. The device OS (250) in turn conveys themap data to the map navigation tool (210).

As another example, as a user travels along a route, the map navigationtool (210) gets additional map data from the map data store (212) forrendering. The map data store (212) may cache detailed map data for thevicinity of the current location, using such cached data toincrementally change the rendered views. The map navigation tool (210)can pre-fetch map data along the route, or part of the route. Thus, asthe rendered map views are updated to account for changes to the currentlocation, the map navigation tool (210) often updates the displaywithout the delay of requesting/receiving new map data from a server. Asneeded, the map data store (212) requests additional map data to renderviews.

The rendering engine (218) processes the view position, location dataand map data, and renders a view of the map. Depending on the usescenario, the rendering engine (218) can render map data from localstorage, map data from a network server, or a combination of map datafrom local storage and map data from a network server. In general, therendering engine (218) provides output commands for the rendered view tothe device OS (250) for output on a display. The rendering engine (218)can also provide output commands to the device OS (250) for voice outputover a speaker or headphones.

The exact operations performed as part of the rendering depend onimplementation. In some implementations, for map rendering, the tooldetermines a field of view and identifies features of the map that arein the field of view. Then, for those features, the tool selects mapdata elements. This may include any and all of the map data elements forthe identified features that are potentially visible in the field ofview. Or, it may include a subset of those potentially visible map dataelements which are relevant to the navigation scenario (e.g.,directions, traffic). For a given route, the rendering engine (218)graphically connects route points along the route (e.g., with ahighlighted color) to show the route and graphically indicates waypointsalong the route. The tool composites the selected map data elements thatare visible (e.g., not obscured by another feature or label) from theview position. Alternatively, the tool implements the rendering usingacts in a different order, using additional acts, or using differentacts.

In terms of overall behavior, the map navigation tool can react tochanges in the location of the computing device and can also react touser input that indicates a change in view position, a change in the topitem in a list of directions for a route, or other change. For example,in response to a finger gesture or button input that indicates a panninginstruction on the map, or upon a change to a previous item or next itemin a list of directions for a route, the map navigation tool can updatethe map with a simple, smooth animation that translates (shiftsvertically and/or horizontally) the map. Similarly, as the location ofthe computing device changes, the map navigation tool can automaticallyupdate the map with a simple translation animation. (Or, the mapnavigation tool can automatically re-position and re-render an icon thatindicates the location of the computing device as the location isupdated.) If the change in location or view position is too large to berendered effectively using a simple, smooth translation animation, themap navigation tool can dynamically zoom out from a first geographicposition, shift vertically and/or horizontally to a second geographicposition, then zoom in at the second geographic position. Such a dynamiczoom operation can happen, for example, when a phone is powered off thenpowered on at a new location, when the view position is re-centered tothe current location of the device from far away, when the user quicklyscrolls through items in a list of directions for a route, or when theuser scrolls to a previous item or next item in the list of directionsthat is associated with a waypoint far from the current view position.The map navigation tool can also react to a change in the type of view(e.g., to switch from a map view to a list view, or vice versa), achange in details to be rendered (e.g., to show or hide trafficdetails).

Alternatively, the map navigation tool (210) includes more or fewermodules. A given module can be split into multiple modules, or differentmodules can be combined into a single layer. For example, the navigationengine can be split into multiple modules that control different aspectsof navigation, or the navigation engine can be combined with theinterpretation engine and/or the rendering engine. Functionalitydescribed with reference to one module (e.g., rendering functionality)can in some cases be implemented as part of another module.

Example Map Navigation UI and Screenshots

FIGS. 3 a and 3 b illustrate a generalized map view (300) andgeneralized direction list view (350), respectively, rendered using amap navigation tool of a mobile computing device (301). FIGS. 4 a-4 cshow example screenshots (401, 402, 403) of a list view of a mapnavigation UI.

The device (301) includes one or more device buttons. FIGS. 3 a and 3 bshow a single device button near the bottom of the device (301). Theeffect of actuating the device button depends on context. For example,actuation of the device button causes the device (301) to return to ahome screen or start screen from the map navigation tool. Alternatively,the device (301) includes no device buttons.

The device (301) of FIGS. 3 a and 3 b includes a touchscreen (302) witha display area and three touchscreen buttons. The effect of actuatingone of the touchscreen buttons depends on context and which button isactuated. For example, one of the touchscreen buttons is a searchbutton, and actuation of the search button causes the device (301) tostart a Web browser at a search page, start a search menu for contactsor start another search menu, depending on the point at which the searchbutton is actuated. Or, one of the touchscreen buttons is a “back”button that can be used to navigate the user interface of the device.Alternatively, the device includes more touchscreen buttons, fewertouchscreen buttons or no touchscreen buttons. The functionalityimplemented with a physical device button can be implemented insteadwith a touchscreen button, or vice versa.

In the display area of the touchscreen (302), the device (301) rendersviews. In FIG. 3 a, as part of the map view (300), the device (301)renders a full map (310) and status information (320) that overlays thetop of the full map (310). The status information (320) can includetime, date, network connection status and/or other information. Thedevice (301) also renders a control section (330) that includes mapnavigation buttons, which depend on implementation of the map navigationtool. FIG. 3 a shows a “directions” button (arrow icon), “re-center”button (crosshairs icon) and “search” button (magnifying glass icon).Actuation of the “directions” button causes the device (301) to openmenu for keystroke input for a destination location. Actuation of the“center” button causes the device (301) to align the view position overthe current location of the device (301). Actuation of the “search”button causes the device (301) to open menu for keystroke input for asearch for a location or locations. Other buttons/controls can beaccessed by actuating the ellipses, such as buttons/controls to clearthe map of extra data, show/hide photographic image details, show/hidetraffic data, show/hide route directions, change settings of the mapnavigation tool such as whether voice instructions are input or whetherorientation of the view changes during progress along the route, etc.Alternatively, the device includes more map navigation buttons, fewermap navigation buttons or no map navigation buttons.

In FIG. 3 b, as part of the list view (350), the device (301) renders ashortened map (360), status information (320) that overlays the top ofthe shortened map (360), and a list control (370). The shortened map(360) shows map details as in the full map (310) but also showsgraphical details of at least part of a route between a start locationand end location. The list control (370) shows text details and iconsfor directions along the route. FIGS. 4 a-4 c show example screenshots(401, 402, 403) of list views, each including a shortened map (360) andlist control (370) as well as status information (320) (namely, time)that overlays the shortened map (360).

The screenshots (401, 402, 403) in FIGS. 4 a-4 c show different listviews for a route between a start location and end location. In thescreenshot (401) of FIG. 4 a, a graphical icon (421) shows the currentlocation along the route in the map portion of the list view. Part ofthe route (411) is shown in a highlighted color relative to the rest ofthe map data. The list control of the screenshot (401) includes waypointicons (431, 432) and text details for waypoints along the route. Itemsin the list of direction are organized as waypoints, which representpoints at which the user is given specific directions to turn, continuestraight, take an exit, etc. Below the waypoint icons (431, 432),direction icons (441, 442) graphically represent the active part of thedirections, e.g., to turn continue straight, take and exit associatedwith the respective waypoints. Distance values (451, 452) indicate thedistance between waypoints (as in the distance (452) between waypoints 2and 3) or distance between the current location and the upcomingwaypoint (as in the distance (451) to waypoint 2).

The color of the waypoint icons (441, 442), text details, directionicons (441, 442) and distance values (451, 452) can change depending onthe status of progress along the route. In FIG. 4 a, the waypoint icon(431), text and direction icon (441) for waypoint 2 are rendered in anaccent color to indicate waypoint 2 is the upcoming item in the list ofdirections. On the other hand, the waypoint icon (432), associated textand direction icon (442) for waypoint 3 are rendered in a neutral colorto indicate waypoint 3 is further in the future.

The screenshot (402) of FIG. 4 b shows the list view after the userscrolls to the end of the list of directions, which is graphicallyrepresented with text (462). Waypoint icons (433) represent a finalwaypoint in the map portion and list control of the list view. The mapportion highlights part (412) of the route graphically. In the listcontrol, the waypoint icon (433) is followed by text associated with thewaypoint and a direction icon (443), but not a distance value since thewaypoint is the final waypoint. The waypoint icon (433), associated textand direction icon (443) for the final, future waypoint are rendered ina neutral color.

The screenshot (403) of FIG. 4 c shows the list view after the userscrolls back to the start of the list of directions, which isgraphically represented with text (461). The map portion shows part(413) of the route graphically, but the completed part of the route isgrayed out. Waypoint icons (434) represent an initial waypoint in themap portion and list control of the list view, and are also grayed outto show that the initial waypoint has been passed. Another waypoint icon(435) represents a subsequent waypoint. In the list control, spacepermitting, the waypoint icons (434, 435) are followed by textassociated with the waypoints and direction icons (444), also grayedout, but not distance value since the waypoints have been passed. Thelist control also includes transit mode icons (472) that the user canactuate to switch between modes of transit (e.g., walking, car, bus).

Overview of Map Navigation with Off-Route Feedback Suppression

In an exemplary navigation scenario, a user (e.g., a user traveling in avehicle or on foot) uses a map navigation tool to navigate along aroute. In some situations, the user may need to or choose to gooff-route (e.g., temporarily) while navigating along the route. Forexample, a user uses a map navigation tool on a mobile computing deviceto generate a route having a start location and an end location. If theuser generates the route at some distance from the start location on theroute, the user may need to travel for a while (e.g., exit a largebuilding, walk to a car in a parking lot, turn around when traveling ona one-way street) to get to the start location. Or, the user may findthe start location to be inaccessible (e.g., because of a closed road ortraffic jam) after the route is generated, and may prefer to join theroute at a point other than the start location (e.g., downstream fromthe start location at a point on the route closer to the end location).As another example, as a car in which the user is riding approaches theuser's intended destination, the driver may need to park the car beforethe destination is actually reached, or the driver may reach thedestination only to find that she must continue driving beyond thedestination to find a parking area. Such user movements are examples of“user drift,” in which a user moves off-route during navigation.

A map navigation tool can raise off-route events to cause output ofoff-route feedback (e.g., audio cues such as tones or speech, visualcues such as text or graphics) to alert the user when the user moves offroute (e.g., by taking a wrong turn). Such off-route events also can beused to initiate recalculation of a route (e.g., from the user'soff-route location to the intended destination). However, such eventscan be annoying to users that know they have not reached the startlocation yet, users that have been forced off-route by a detour, orusers that know they have already reached their destination. Such eventsalso can be confusing or misleading to users that are near theirdestination. For example, route recalculation and off-route feedback cancause a user to think that she is further from her destination than shereally is, which can lead to travel delays and frustration.

Accordingly, techniques and tools are described for map navigation neara route terminus. Described techniques and tools can improve userexperience in situations such as where a user has navigated near enoughto a destination such that off-route feedback is no longer useful, butthe user is not precisely on a route defined by a map navigation tool.For example, to simplify navigation near a terminus of a route (e.g.,near an end location or a start location), a map navigation tool canprovide a terminus buffer area (e.g., an end-of-route buffer area or astart-of-route buffer area) in which off-route feedback (e.g., audio orvisual warnings or alerts) can be suppressed in some circumstances, suchas when a user enters the terminus buffer area, which also can bereferred to as a “bubble.” In described examples, when off-routefeedback is suppressed, output of off-route feedback is omitted forsome, but not all, off-route locations and movements. For example,output of off-route feedback can be omitted when a user is at anoff-route location within a terminus buffer area, but the off-routefeedback may be output at other times depending on the user's futuremovements (e.g., movements to off-route locations outside a terminusbuffer area). The off-route feedback can continue to be suppressed for alength of time (e.g., until some other event, such as a user leaving thebuffer area, occurs). A map navigation tool also can disable off-routefeedback in some circumstances. When off-route feedback is disabled, themap navigation tool does not output off-route feedback, regardless ofthe user's location or movements. As an example, a map navigation toolcan disable off-route warnings for a route when a user crosses anarrival threshold and enters an arrival area associated with the route.The arrival area can be within an end-of-route buffer area. Off-routefeedback that has been disabled can be re-enabled when a new route iscalculated.

Techniques and tools also are described for map navigation at the startof a route, or when joining a route downstream from a start location.Described techniques and tools can improve user experience in situationssuch as where a user is not precisely on a route defined by a mapnavigation tool. For example, to simplify navigation near a startlocation of a route, a map navigation tool can provide a start-of-routebuffer area in which off-route feedback (e.g., audio or visual warningsor alerts) can be suppressed in some circumstances. The off-routefeedback can continue to be suppressed for a length of time (e.g., untilsome other event, such as a user leaving the start-of-route buffer area,occurs). As another example, off-route feedback can be suppressed for auser even if the user is not within a start-of-route buffer area, suchas when the user generates a route at an initial location that is faraway from any part of the route and then joins the route later (e.g., atthe start location or downstream from the start location). A mapnavigation tool can automatically detect when a user has joined a route,making it unnecessary for the user to indicate an intention to startnavigating, while still avoiding unnecessary off-route feedback.Described techniques and tools can be used in combination with bufferareas at other locations on a route, such as a buffer area at an endlocation.

In described examples, a user is considered to be typically in closeproximity to a mobile computing device that implements a map navigationtool, and so certain calculations, state changes, and other acts aredescribed as occurring in response to a user's movement or location forease of illustration. The user's location and the location of thecomputing device being tracked can be considered to be the same, butthis is not required. For example, a user can control from a remotelocation a mobile computing device that implements a map navigationtool, or the mobile computing device can be controlled in some otherway.

End-of-route Navigation Examples

In described examples, within an end-of-route buffer (which also can bereferred to as a destination buffer), off-route feedback can besuppressed. For example, if a user's current location is at a distancefrom the route (e.g., a distance greater than a position error value)that would raise an off-route event at some other point along the route(e.g., a point near the middle of the route, outside the end-of-routebuffer), output of off-route feedback (e.g., an audio and/or visualnotification) that would otherwise be associated with such an off-routeevent can be omitted. The end-of-route buffer can help to avoidunnecessary, misleading, or annoying off-route feedback and does notrequire any action by the user to suppress the off-route feedback.Besides suppression of off-route feedback, other conditions also canapply to end-of-route buffer areas. For example, program states such asthe list items in a list view can remained unchanged if the userre-enters the route after being off-route but within the end-of-routebuffer. The user's movement can continue to be tracked while the user iswithin the end-of-route buffer. For example, if the user begins movingaway from the destination and leaves the end-of-route buffer, off-routeevents can be raised, off-route feedback can be output, a new route canbe calculated, or other actions can be performed. The size and shape ofthe buffer area can vary depending on implementation. For example, theend-of-route buffer can be configured as a circle centered on the endlocation of a route.

A map navigation tool also can exhibit other behavior when a user islocated within an end-of-route buffer area. As an example, dynamic zoomfunctionality can be enabled. In an exemplary implementation, whendynamic zoom is enabled, dynamic zoom operations such as the exemplarydynamic zoom operations described above can be performed. Alternatively,other dynamic zoom operations can be performed, or dynamic zoomfunctionality can be disabled. As another example, map orientation canbe user-defined. In an exemplary implementation, when map orientation isuser-defined, orientation of a view of a map can be set such that theheading of the user's progress along the route is upward in the view ofthe map. The map view can be centered on the user's location, the end ofthe route or some other map area. Alternatively, other map orientationsor map views can be used. As another example, idle timer resetfunctionality can be enabled. In an exemplary implementation, when idletimer reset functionality is enabled, an idle timer that initiatesscreen lock for a mobile computing device when it expires (e.g., forsecurity purposes) is configured to reset before expiration to preventscreen lock from occurring. The configuration of the idle timer can berevisited (e.g., a determination of whether to enable or disable idletimer reset functionality can be made) at regular intervals (e.g., every5 minutes), or the configuration can be changed (e.g., to allow screenlock) in response to an event (e.g., where the user has exited the mapnavigation tool or some other event has occurred). The length of timethat the idle timer can run before resetting can vary depending onimplementation. Alternatively, idle timer reset functionality can bedisabled or treated in some other way. As another example, tap inputfunctionality can be enabled. In an exemplary implementation, when tapinput functionality is enabled, a tap on a touchscreen can cause anupcoming list item in a list of directions associated with a route to bedisplayed and announced (e.g., audibly). Alternatively, tap input can beused to perform some other function, or tap input functionality can bedisabled.

A map navigation tool can raise an arrive-at-destination event when auser crosses the arrival threshold into an arrival area. For example,the map navigation tool can generate an audio cue to indicate that thelast list item in a list of directions has been completed and disablefurther off-route feedback. The arrival threshold can help to avoidunnecessary, misleading, confusing, or annoying off-route feedback.Other conditions also can apply to arrival areas. For example, programstates such as the list items in a list view can remained unchangeddespite any further movement by the user (e.g., going off-route,re-entering the route) after crossing the arrival threshold. Furthertracking of the user's movement with regard to the route associated withthe arrival threshold can be omitted. For example, if the user beginsmoving away from the destination and leaves the arrival area and anend-of-route buffer area, off-route events and route recalculation canbe omitted. The arrival threshold can be positioned within anend-of-route buffer area. For example, the arrival threshold can berepresented by a circle centered on the end location of a route, withina larger circle that represents an end-of-route buffer area. The bufferarea (as determined by, for example, the radius of the circle thatrepresents an arrival threshold) can vary depending on implementation.In one implementation, a radius (e.g., 100 meters) is used based on anobservation of a location framework in which a high percentage ofposition fixes (e.g., 95%) are accurate to within a distancecorresponding to the radius (e.g., 100 meters). The actual level ofaccuracy for position fixes can vary.

A map navigation tool also can exhibit other behavior when anarrive-at-destination event is raised (e.g., when a user enters anarrival area). As an example, dynamic zoom functionality can bedisabled. Alternatively, dynamic zoom functionality can be enabled. Asanother example, map orientation can be a north-up orientation wherenorth is upward in the map view. The map view can be centered on theuser's location, the end of the route or some other map area.Alternatively, other map orientations or map views can be used. Asanother example, idle timer reset functionality can be disabled. In anexemplary implementation, when idle timer reset functionality isdisabled, an idle timer that initiates screen lock for a mobilecomputing device when it expires (e.g., for security purposes) isconfigured not to reset before expiration, thereby allowing screen lockto occur when the idle timer expires. The length of time that the idletimer can run before expiring can vary depending on implementation.Alternatively, idle timer reset functionality can be enabled, or screenlock functionality can be treated in some other way. As another example,tap input functionality can be enabled. In an exemplary implementation,when tap input functionality is enabled, a tap on the touchscreen cancause a previous list item in a list of directions associated with aroute to be displayed and announced (e.g., audibly). Alternatively, tapinput can be used to perform some other function, or tap inputfunctionality can be disabled.

FIGS. 5 a-5 e show example representations of a route (510) between astart location (labeled A) and an end location (labeled B) with anassociated arrival area (530) and end-of-route buffer area (540). InFIGS. 5 a-5 e, a triangular icon (502) shows locations of a user alongthe route (510) and indicates movement directions. Dashed lines (520,522) indicate an area which is considered to be on the route (510). Thedistance from the route (510) to each of the dashed lines (520, 522) canbe represented by a position error value. The position error value canbe used to account for errors in position fixes. In one implementation,the position error value is 50 meters. The position error value can varydepending on implementation. The inner dashed circle represents anarrival area (530). The radius of the arrival area (530) can berepresented by an arrival threshold value (e.g., 100 meters). The outerdashed circle represents an end-of-route buffer area (540). The radiusof the end-of-route buffer area can be represented by an end-of-routebuffer value (e.g., a value greater than 100 meters).

In the example shown in FIG. 5 a, the icon (502) is located on the route(510). The movement direction indicated by the icon (502) in FIG. 5 a isconsidered an on-route direction (movement toward the end location). Inthe example shown in FIG. 5 b, the icon (502) is located off the route(510). FIG. 5 b represents a situation where an off-route event can beraised, and off-route feedback can be presented to a user (e.g., viavisual output or audio output). In the example shown in FIG. 5 c, theicon (502) is located on the route (510) but within the end-of-routebuffer area (540), and the indicated movement direction is considered anoff-route direction (movement away from the end location). In theexample shown in FIG. 5 d, the icon (502) is located off the route (510)but within the end-of-route buffer area (540). FIGS. 5 c and 5 drepresent exemplary situations in which an off-route event could beraised, except that the respective locations represented by the icon(502) are within the end-of-route buffer area (540), so off-routefeedback can be suppressed. In the example shown in FIG. 5 e, the icon(502) is located off the route (510) but within the arrival area (530).FIG. 5 e represents an exemplary situation in which anarrive-at-destination event can be raised and further off-route eventscan be disabled.

Features that are represented as shown in FIGS. 5 a-5 e also can berepresented in other ways. For example, the arrival area (530) and theend-of-route buffer area (540) can be of any size or shape. As anotherexample, the end location (A) need not be centered in the arrival area(530) or the end-of-route buffer area (540). As another example, thearrival area (530) and the end-of-route buffer area (540) need not beconcentric. Further, although features shown in FIGS. 5 a-5 e can berendered for display, such rendering is not required. A subset offeatures can be rendered for display while other features are notrendered for display. For example, in a map navigation tool, the icon(502) and part of the route (510), can be rendered for display toindicate a user's location relative to the route, while other features(e.g., the arrival area (530), the end-of-route buffer area (540), thedashed lines (520, 522)) are not rendered for display. The number andtype of features in a subset of features that are rendered for displaycan vary depending on implementation, user preferences, or programstates such as the state of a map view. For example, if a user is faraway from the route (510), a map view that is centered on the icon (102)may not show any part of the route (510), and a map view that iscentered on the end location (B) of the route (510) may not show theicon (102). Still further, features that are rendered for display in amap navigation tool can vary in detail from the examples shown in FIGS.5 a-5 e. For example, the icon (502) can be of any shape or size, andneed not indicate movement direction.

FIG. 6 shows a generalized technique (600) for map navigation using aterminus buffer area. A computing device such as a mobile computingdevice can perform the technique (600). For example, a mobile computingdevice that implements a map navigation tool identifies (610) a currentlocation of the mobile computing device (e.g., a mobile computing deviceheld or controlled by a user). The mobile computing device determines(620) whether the current location is within a terminus buffer area(e.g., an end-of-route buffer area) associated with a route defined bythe map navigation tool. For example, the mobile computing device cancalculate a distance between the current location and a terminuslocation (e.g., an end location that marks a user's destination)associated with the route, and compare the distance with a terminusbuffer value (e.g., an end-of-route buffer value). The mobile computingdevice can selectively suppress off-route feedback based on whether thecurrent location is within the terminus buffer area. In the exemplarytechnique (700) shown in FIG. 7, a mobile computing device thatimplements a map navigation tool identifies (710) a current location ofthe mobile computing device; determines (720) whether the currentlocation is within a terminus buffer area associated with a routedefined by the map navigation tool; and selectively suppresses (730)off-route feedback based on whether the current location is within theterminus buffer area. For example, off-route feedback is suppressed ifthe current location is within the terminus buffer area, and off-routefeedback is not suppressed if the current location is outside theterminus buffer area. Off-route feedback can be output (e.g., audiooutput such as speech can be output via a speaker, visual output such astext or graphics can be rendered for display) in response to anoff-route event if output feedback is not suppressed. The terminusbuffer area can surround a terminus location associated with the route.For example, an end-of-route buffer area can be a circular area thatsurrounds an end location of the route.

FIG. 8 shows a generalized technique (800) for map navigation using anend-of-route buffer area and an arrival area. A computing device such asa mobile computing device can perform the technique (800). For example,a mobile computing device that implements a map navigation toolidentifies (810) a current location of the mobile computing device(e.g., a mobile computing device held or controlled by a user). Themobile computing device determines (820) whether the current location ofthe mobile computing device is within an end-of-route buffer areaassociated with an end location of a route defined by the map navigationtool. For example, the mobile computing device can calculate a distancebetween the current location of the mobile computing device and the endlocation of the route, and compare the distance with an end-of-routebuffer value. The mobile computing device determines (830) whether thecurrent location of the mobile computing device is within an arrivalarea associated with the end location of the route. For example, themobile computing device can calculate a distance between the currentlocation of the mobile computing device and the end location of theroute, and compare the distance with an arrival threshold value. Themobile computing device can selectively raise an arrive-at-destinationevent. For example, if the distance is less than the arrival thresholdvalue, the arrive-at-destination event is raised, and if the distance isgreater than the arrival threshold value, the arrive-at-destinationevent is not raised. The mobile computing device can selectivelysuppress off-route feedback based on whether the current location of themobile computing device is within the end-of-route buffer area. Thearrival area can be surrounded by the end-of-route buffer area. Forexample, the two areas can be represented by concentric circles withradii equal to the end-of-route buffer value and the arrival thresholdvalue, respectively.

FIG. 9 shows an exemplary detailed technique (900) for map navigationusing an end-of-route buffer area and an arrival area. A computingdevice such as a mobile computing device can perform the technique(900). For example, a mobile computing device that implements a mapnavigation tool identifies (910) a first, off-route location of thecomputing device. The mobile computing device outputs (920) off-routefeedback based at least in part on the off-route location. The mobilecomputing device identifies (930) a second location of the computingdevice and determines (940) that the second location is within anend-of-route buffer area associated with an end location of a routedefined by the map navigation tool. The mobile computing devicesuppresses (950) off-route feedback based on the second location withinthe end-of-route buffer area. The mobile computing device identifies(960) a third location of the computing device and determines (970) thatthe third location is within an arrival area associated with the endlocation of the route. The mobile computing device disables (980)off-route feedback based on the third location.

FIG. 10 shows a technique for outputting and then selectivelysuppressing off-route feedback based on whether an updated location iswithin an end-of-route buffer area. A computing device such as a mobilecomputing device can perform the technique (1000). For example, a mobilecomputing device identifies (1010) a first location of the mobilecomputing device (e.g., a mobile computing device held or controlled bya user). The mobile computing device outputs (1020) off-route feedbackbased at least in part on the first location and a route defined by amap navigation tool. For example, the mobile computing device outputsoff-route feedback if the device is off-route, but not within anend-of-route buffer area. The mobile computing devices identifies (1030)an updated location of the mobile computing device (e.g., the locationof the mobile computing device is updated after a user holding themobile computing device has moved some distance). The mobile computingdevice determines (1040) whether the updated location is within anend-of-route buffer area associated with the route. The mobile computingdevice selectively suppresses (1050) further off-route feedback based onwhether the updated location is within the end-of-route buffer area. Forexample, if the updated location is within the end-of-route buffer area,further off-route feedback is suppressed, and if the updated location isoutside the end-of-route buffer area, further off-route feedback is notsuppressed. The mobile computing device also can determine movementdirection, such as by performing position calculations at differentpoints in time. A determination to output off-route feedback can bebased on movement direction. For example, a mobile computing device canoutput off-route feedback if a movement direction indicates that a useris on-route but moving in the wrong direction (e.g., away from thedestination). Off-route feedback can be selectively suppressedindependent of movement direction. For example, if the updated locationis within the end-of-route buffer area, further off-route feedback canbe suppressed regardless of movement direction. Such feedbacksuppression can be useful, for example, where a user is performingseveral turns (e.g., in a parking area) in the end-of-route buffer areaand does not need to be alerted when moving away from the destination.

Start-of-route and Route-joining Examples

In described examples, at locations within a start-of-route buffer area,off-route feedback can be suppressed. For example, if a user's currentlocation is at a distance from the route (e.g., a distance greater thana position error value) that would raise an off-route event at someother point along the route (e.g., a point near the middle of the route,outside the start-of-route buffer), output of off-route feedback (e.g.,an audio and/or visual notification) that would otherwise be associatedwith such an off-route event can be omitted. The start-of-route bufferarea can help to avoid unnecessary, misleading, or annoying off-routefeedback and does not require any action by the user to suppress theoff-route feedback. A user's movement can continue to be tracked whilethe user is within the start-of-route buffer area. For example, if theuser begins moving away from the start location and leaves thestart-of-route buffer area, off-route events can be raised, off-routefeedback can be output, a new route can be calculated, or other actionscan be performed. The size and shape of the start-of-route buffer areacan vary depending on implementation, and can be adjusted to account forfactors such as an expected amount of user drift. For example, thestart-of-route buffer area can be represented by a circle centered onthe start location of a route, and a dynamic radius can be used thatvaries depending on the distance of a user's current location from astart location of a route.

In described examples, a user can use a map navigation tool to generatea route while the user is at a location within a start-of-route bufferarea. The map navigation tool can track a distance between the user'slocation and the start location. If the distance is decreasing, the mapnavigation tool can infer that the user is proceeding to the startlocation and can suppress off-route feedback. If the distance isincreasing (e.g., increasing at a rate greater than a set threshold),the map navigation tool can infer that the user is not proceeding to thestart location and can raise an off-route event and allow off-routefeedback to be output. The distance (d) between the user's location andthe start location can be expressed as d=distance(mePOI, <startlocation>), where mePOI represents the user's current location, anddistance( ) is a distance function.

A map navigation tool also can exhibit other behavior when a user'scurrent location is within a start-of-route buffer area. As an example,dynamic zoom functionality can be disabled. Alternatively, dynamic zoomfunctionality can be enabled. As another example, map orientation can bea north-up orientation where north is upward in the map view. The mapview can be centered on the user's location, the start of the route, orsome other map area. Alternatively, other map orientations can be used.As another example, idle timer reset functionality can be enabled. In anexemplary implementation, when idle timer reset functionality isenabled, an idle timer that initiates screen lock when it expires (e.g.,for security purposes) is configured to reset before expiration toprevent screen lock from occurring. The configuration of the idle timercan be revisited (e.g., a determination of whether to enable or disableidle timer reset functionality can be made) at regular intervals (e.g.,every 5 minutes), or the configuration can be changed (e.g., to allowscreen lock) in response to an event (e.g., where the user has exitedthe map navigation tool or some other event has occurred). The length oftime that the idle timer can run before resetting can vary depending onimplementation. Alternatively, idle timer reset functionality can bedisabled or treated in some other way. As another example, tap inputfunctionality can be enabled. In an exemplary implementation, when tapinput functionality is enabled, a tap on a touchscreen can cause thefirst list item in a list of directions associated with the route to bedisplayed and announced (e.g., audibly). Alternatively, tap input can beused to perform some other function, or tap input functionality can bedisabled.

In described examples, a user also can use a map navigation tool togenerate a route while the user is at a location outside astart-of-route buffer area. For example, a user can generate a route ata location that is far away from any point on the route, and can travelto the start location or join the route downstream from the startlocation. A map navigation tool can exhibit behavior when a user'scurrent location is outside a start-of-route buffer area that is similarin some respects to behavior exhibited by the tool when the user'scurrent location is within the start-of-route buffer area. As anexample, dynamic zoom functionality can be disabled. Alternatively,dynamic zoom functionality can be enabled. As another example, maporientation can be a north-up orientation where north is upward in themap view. The map view can be centered on the user's location, the startof the route or some other map area. Alternatively, other maporientations or map views can be used. As another example, tap inputfunctionality can be enabled. In an exemplary implementation, when tapinput functionality is enabled, a tap on the touchscreen can cause thefirst list item in a list of directions associated with the route to bedisplayed and announced (e.g., audibly). Alternatively, tap input can beused to perform some other function, or tap input functionality can bedisabled.

A map navigation tool also can exhibit behavior when a user's currentlocation is outside a start-of-route buffer area that differs in somerespects from behavior exhibited by the tool when the user's currentlocation is within the start-of-route buffer area. As an example, idletimer reset functionality can be disabled. In an exemplaryimplementation, when idle timer reset functionality is disabled, an idletimer that initiates screen lock when it expires (e.g., for securitypurposes) is configured not to reset before expiration, thereby allowingscreen lock to occur when the idle timer expires. The length of timethat the idle timer can run before expiring can vary depending onimplementation. Alternatively, idle timer reset functionality can beenabled, or screen lock functionality can be treated in some other way.

A map navigation tool also can exhibit behavior as described above whena user's current location is outside a start-of-route buffer area, andthen switch to an on-route state when the user joins the route or entersa start-of-route buffer area after being off-route and outside thestart-of-route buffer area. For example, a user can voluntarily takeanother path or be prevented from reaching the start location due tounexpected detours, one-way streets, or other obstacles, and then jointhe route downstream from the start location. As another example, a usercan leave the route and then rejoin the route. As another example, auser can enter a start-of-route buffer area after traveling to the areafrom a distant, off-route location, and then join the route. In any ofthe described examples, the map navigation tool can alert a user (e.g.,with an audible tone) when the route is joined.

A map navigation tool can exhibit on-route behavior that differs fromoff-route behavior when a user joins a route after entering astart-of-route buffer area from an off-route location, or otherwisejoins a route from an off-route location (e.g., by joining the route forthe first time downstream from the start location, or by rejoining theroute after leaving the route). As an example, dynamic zoomfunctionality can be enabled. In an exemplary implementation, whendynamic zoom is enabled, dynamic zoom operations such as the exemplarydynamic zoom operations described above can be performed. Alternatively,other dynamic zoom operations can be performed, or dynamic zoomfunctionality can be disabled. As another example, map orientation canbe user-defined. In an exemplary implementation, when map orientation isuser-defined, orientation of a view of a map can be set such that theheading of the user's progress along the route is upward in the view ofthe map. The map view can be centered on the user's location, the startof the route or some other map area. Alternatively, other maporientations or map views can be used. As another example, idle timerreset functionality can be enabled. In an exemplary implementation, whenidle timer reset functionality is enabled, an idle timer that initiatesscreen lock when it expires (e.g., for security purposes) is configuredto reset before expiration to prevent screen lock from occurring. Theconfiguration of the idle timer can be revisited (e.g., a determinationof whether to enable or disable idle timer reset functionality can bemade) at regular intervals (e.g., every 5 minutes), or the configurationcan be changed (e.g., to allow screen lock) in response to an event(e.g., where the user has exited the map navigation tool). The length oftime that the idle timer can run before resetting can vary depending onimplementation. Alternatively, idle timer reset functionality can bedisabled or treated in some other way. As another example, tap inputfunctionality can be enabled. In an exemplary implementation, when tapinput functionality is enabled, a tap on the touchscreen can cause anupcoming list item in a list of directions to be displayed and announced(e.g., audibly). Alternatively, tap input can be used to perform someother function, or tap input functionality can be disabled.

FIGS. 11 a-11 d show example representations of a route (1110) between astart location (labeled A) with an associated start-of-route buffer area(1130) and an end location (labeled B). In FIGS. 11 a-11 d, a triangularicon (1102) shows locations of a user along the route (1110) andindicates movement directions. Dashed lines (1120, 1122) indicate anarea which is considered to be on the route (1110). The distance fromthe route (1110) to each of the dashed lines (1120, 1122) can berepresented by a position error value. The position error value can beused to account for errors in position fixes. In one implementation, theposition error value is 50 meters. The position error value can varydepending on implementation. The dashed circle represents thestart-of-route buffer area (1130). The radius of the start-of-routebuffer area (1130) can be represented by a start-of-route buffer value(e.g., a value greater than the position error value).

In the example shown in FIG. 11 a, the icon (1102) is located within thestart-of-route buffer area (1130). The movement direction indicated bythe icon (1102) in FIG. 11 a is toward the start location. FIG. 11 arepresents a situation where off-route feedback can be suppressed. Inthe example shown in FIG. 11 b, the icon (1102) is located off the route(1110) and outside the start-of-route buffer area (1130). However, FIG.11 b represents another situation where off-route feedback can besuppressed. For example, if a user generated the route (1110) at thelocation indicated by the icon (1102), off-route feedback can besuppressed while the user proceeds to the start location (as shown inFIG. 11 c) or joins the route downstream from the start location (asshown in FIG. 11 d). In the example shown in FIG. 11 c, the icon (1102)has moved from an initial position (labeled “Ai”) along the path shownby the dashed line (1150) and is now located within the start-of-routebuffer area (1130). In the example shown in FIG. 11 d, the icon (1102)has moved from an initial position (labeled “Ai”) along the path shownby the dashed line (1160) and is now located on the route (1110) at alocation that is downstream from the start location.

Features that are represented as shown in FIGS. 11 a-11 d also can berepresented in other ways. For example, the start-of-route buffer area(1130) can be of any size or shape. As another example, the startlocation (A) need not be centered in the start-of-route buffer area(1130). Further, although features shown in FIGS. 11 a-11 d can berendered for display, such rendering is not required. A subset offeatures can be rendered for display while other features are notrendered for display. For example, in a map navigation tool, the icon(1102) and part of the route (1110), can be rendered for display toindicate a user's location relative to the route, while other features(e.g., the start-of-route buffer area (1130), the dashed lines (1120,1122)) are not rendered for display. The number and type of features ina subset of features that are rendered for display can vary depending onimplementation, user preferences, or program states such as the state ofa map view. For example, if a user is far away from the route (1110), amap view that is centered on the icon (1102) may not show any part ofthe route (1110), and a map view that is centered on the start location(A) of the route (1110) may not show the icon (1102). Still further,features that are rendered for display in a map navigation tool can varyin detail from the examples shown in FIGS. 11 a-11 d. For example, theicon (1102) can be of any shape or size, and need not indicate movementdirection.

FIG. 12 shows an exemplary technique (1200) for performing mapnavigation using a start-of-route buffer area associated with a routedefined by a map navigation tool. A computing device such as a mobilecomputing device can perform the technique (1200). For example, a mobilecomputing device that implements the map navigation tool identifies(1210) a current location of the mobile computing device, and determines(1220) whether the current location is within a start-of-route bufferarea associated with a start location of the route. For example, themobile computing device can calculate a distance between the currentlocation and the start location, and compare the distance with astart-of-route buffer value (e.g., a radius of a circle that representsthe start-of-route buffer area). The mobile computing device selectivelysuppresses (1230) off-route feedback based on whether the currentlocation is within the start-of-route buffer area. For example, if thecurrent location is within the start-of-route buffer area, off-routefeedback is suppressed, and if the current location is outside thestart-of-route buffer area, off-route feedback is not suppressed. Themobile computing device can output off-route feedback (e.g., audiooutput such as speech, visual output such as text or graphics) inresponse to an off-route event if off-route feedback is not suppressed.The start-of-route buffer value can be greater than a position errorvalue. The size of the start-of-route buffer area can be variable basedon, for example, a distance between the current location of the mobilecomputing device and the start location of the route.

FIG. 13 shows another technique (1300) for performing map navigationusing a start-of-route buffer area associated with a route defined by amap navigation tool. A computing device such as a mobile computingdevice can perform the technique (1300). For example, a mobile computingdevice identifies (1310) a current location of the mobile computingdevice, the current location being within a start-of-route buffer areaassociated with a start location of the route. The mobile computingdevice determines (1320) a movement direction of the mobile computingdevice. For example, the mobile computing device can compare the currentlocation with a previous location of the mobile computing device todetermine movement direction. The mobile computing device suppresses(1330) off-route feedback based at least in part on the movementdirection and the current location. For example, in one implementation,if the movement direction is such that a distance between the currentlocation and the start location is not increasing, off-route feedback issuppressed, and if the movement direction is such that a distancebetween the current location and the start location is increasing,off-route feedback is not suppressed. The mobile computing device candetermine a rate of movement between the current location and the startlocation, and can selectively raise an off-route event based at least inpart on the movement direction and the rate of movement. In oneimplementation, if the movement direction indicates movement away fromthe start location and the rate of movement is less than a threshold, anoff-route event is raised. The technique (1300) can be used insituations such as where the computing device being tracked is locatedwithin the start-of-route buffer when the route is generated.

FIG. 14 shows a generalized technique (1400) for performing mapnavigation in which off-route feedback is suppressed for a computingdevice located outside a start-of-route buffer area. A computing devicesuch as a mobile computing device can perform the technique (1400). Forexample, a mobile computing device identifies (1410) a first, off-routelocation of the mobile computing device outside a start-of-route bufferarea, and suppresses (1420) off-route feedback based at least in part onthe first location. The technique (1400) can be used in situations suchas where the computing device being tracked is located at an off-routelocation outside the start-of-route buffer area when the route isgenerated. The off-route feedback can remain suppressed during movementof the computing device to a second location (e.g., an on-routelocation).

FIG. 15 shows a generalized technique (1500) for performing mapnavigation in which off-route feedback is suppressed during movementfrom an off-route location to an on-route location. A computing devicesuch as a mobile computing device can perform the technique (1500). Forexample, a mobile computing device identifies (1510) a first, off-routelocation of the mobile computing device, where the first location isoutside a buffer area associated with a start location of the route. Themobile computing device suppresses (1520) off-route feedback duringmovement of the mobile computing device being tracked to a second,on-route location. Different functionality (e.g., idle timer resetfunctionality, dynamic zoom functionality, map view orientation, tapinput functionality) can be changed in the map navigation tool for thesecond location relative to the first location. FIG. 16 shows a detailedtechnique (1600) for performing map navigation in which off-routefeedback is suppressed during movement from an off-route location to anon-route location. For example, a mobile computing device identifies(1610) a first, off-route location of the mobile computing devicerelative to a route defined by a map navigation tool, where the firstlocation is outside a buffer area associated with start location. Themobile computing device suppresses (1620) off-route feedback duringmovement to a second, on-route location. For the second location ofcomputing device (relative to the first location), the mobile computingdevice changes (1630) idle timer reset functionality of the mobilecomputing device, changes (1640) dynamic zoom functionality of the mapnavigation tool, changes (1650) orientation of a map view in the mapnavigation tool, and changes (1660) tap input functionality of the mapnavigation tool. The techniques (1500, 1600) can be used in situationssuch as where the computing device being tracked is located at anoff-route location outside a start-of-route buffer area when the routeis generated, and then moves to join the route (e.g., at a locationdownstream from the start location).

Although acts described herein (e.g., acts shown in FIGS. 6-10 and12-16) can be performed by a single client computing device, in any ofthe described examples a server computing device also can perform one ormore of the illustrated acts, and can service requests from multipleclient computing devices. Server processing can be stateless, or aserver computing device can remember state information for specificclient computing devices from request to request.

Alternatives and Variations

Although the operations of some of the disclosed methods are describedin a particular, sequential order for convenient presentation, it shouldbe understood that this manner of description encompasses rearrangement,unless a particular ordering is required by specific language set forthbelow. For example, operations described sequentially may in some casesbe rearranged or performed concurrently. Moreover, for the sake ofsimplicity, the attached figures may not show the various ways in whichthe disclosed methods can be used in conjunction with other methods.

Any of the disclosed methods can be implemented as computer-executableinstructions or a computer program product stored on one or morecomputer-readable storage media (e.g., non-transitory computer-readablemedia, such as one or more optical media discs such as DVD or CD,volatile memory components (such as DRAM or SRAM), or nonvolatile memorycomponents (such as hard drives)) and executed on a computer (e.g., anycommercially available computer, including smart phones or other mobiledevices that include computing hardware). Any of the computer-executableinstructions for implementing the disclosed techniques as well as anydata created and used during implementation of the disclosed embodimentscan be stored on one or more computer-readable media (e.g.,non-transitory computer-readable media). The computer-executableinstructions can be part of, for example, a dedicated softwareapplication or a software application that is accessed or downloaded viaa web browser or other software application (such as a remote computingapplication). Such software can be executed, for example, on a singlelocal computer (e.g., any suitable commercially available computer) orin a network environment (e.g., via the Internet, a wide-area network, alocal-area network, a client-server network (such as a cloud computingnetwork), or other such network) using one or more network computers.

For clarity, only certain selected aspects of the software-basedimplementations are described. Other details that are well known in theart are omitted. For example, it should be understood that the disclosedtechnology is not limited to any specific computer language or program.For instance, the disclosed technology can be implemented by softwarewritten in C++, Java, Perl, JavaScript, Adobe Flash, or any othersuitable programming language. Likewise, the disclosed technology is notlimited to any particular computer or type of hardware. Certain detailsof suitable computers and hardware are well known and need not be setforth in detail in this disclosure.

The disclosed methods, apparatus, and systems should not be construed aslimiting in any way. Instead, the present disclosure is directed towardall novel and non-obvious features and aspects of the various disclosedembodiments, alone and in various combinations and sub-combinations withone another. The disclosed methods, apparatus, and systems are notlimited to any specific aspect or feature or combination thereof, nor dothe disclosed embodiments require that any one or more specificadvantages be present or problems be solved. In view of the manypossible embodiments to which the principles of the disclosed inventionmay be applied, it should be recognized that the illustrated embodimentsare only preferred examples of the invention and should not be taken aslimiting the scope of the invention. Rather, the scope of the inventionis defined by the following claims. We therefore claim as our inventionall that comes within the scope and spirit of these claims.

1. In a computer system, a method comprising: identifying a currentlocation of a computing device, the current location being within astart-of-route buffer area associated with a start location of a routedefined by a map navigation tool; determining a movement direction ofthe computing device; and suppressing off-route feedback based at leastin part on the movement direction and the current location.
 2. Themethod of claim 1 wherein the start-of-route buffer area surrounds thestart location of the route.
 3. The method of claim 2 wherein thestart-of-route buffer area is a circular area.
 4. The method of claim 1wherein the size of the start-of-route buffer area is variable based atleast in part on the current location of the computing device.
 5. Themethod of claim 1 wherein the size of the start-of-route buffer area isvariable based at least in part on a distance between the currentlocation of the computing device and the start location of the route. 6.The method of claim 1 wherein the computing device is located within thestart-of-route buffer area when the route is generated.
 7. The method ofclaim 1 wherein: if the movement direction is such that a distancebetween the computing device and the start location of the route is notincreasing, off-route feedback is suppressed; otherwise, if the movementdirection is such that a distance between the computing device and thestart location is increasing, off-route feedback is not suppressed. 8.The method of claim 1 further comprising: determining a rate of movementof the computing device.
 9. The method of claim 8 further comprisingselectively raising an off-route event based at least in part on themovement direction and the rate of movement, wherein: if the movementdirection indicates movement away from the start location of the routeand the rate of movement is less than a threshold, an off-route event israised; otherwise, an off-route event is not raised.
 10. The method ofclaim 1 wherein the computing device is a smart phone having atouchscreen, and wherein, when the current location is within thestart-of-route buffer area: idle timer reset functionality is enabledfor the smart phone; dynamic zoom functionality is disabled; orientationof a view of a map is set such that north is upward in the view of themap; and tap input functionality is set such that a tap input on thetouchscreen causes first item in a list of directions associated withthe route to be displayed and announced.
 11. One or morecomputer-readable storage media storing computer-executable instructionsfor causing a computing device to perform a method comprising:identifying a first location of a mobile computing device thatimplements a map navigation tool, the first location being an off-routelocation outside a start-of-route buffer area associated with a startlocation of a route defined by the map navigation tool; and suppressingoff-route feedback based at least in part on the first location.
 12. Thecomputer-readable storage media of claim 11 wherein the mobile computingdevice is located outside the start-of-route buffer when the route isgenerated.
 13. The computer-readable storage media of claim 11 whereinthe mobile computing device is a smart phone having a touchscreen,wherein idle timer reset functionality in the smart phone is disabled,wherein dynamic zoom functionality in the map navigation tool isdisabled, wherein orientation of a view of a map is set in the mapnavigation tool such that north is upward in the view of the map, andwherein tap input functionality in the map navigation tool is set suchthat a tap input on the touchscreen causes a first item in a list ofdirections associated with the route to be announced.
 14. Thecomputer-readable storage media of claim 11 wherein the off-routefeedback remains suppressed during movement of the mobile computingdevice to a second location, the second location being an on-routelocation.
 15. The computer-readable storage media of claim 14 whereinthe second location is within the start-of-route buffer area.
 16. Thecomputer-readable storage media of claim 14 wherein idle timer resetfunctionality for the mobile computing device is changed for the secondlocation relative to the first location.
 17. The computer-readablestorage media of claim 14 wherein dynamic zoom functionality is changedfor the second location relative to the first location.
 18. Thecomputer-readable storage media of claim 14 wherein orientation of aview of a map is changed for the second location relative to the firstlocation.
 19. The computer-readable storage media of claim 14 whereintap input functionality is changed for the second location relative tothe first location.
 20. A mobile computing device that includes aprocessor, memory and storage media, the storage media storingcomputer-executable instructions for causing the mobile computing deviceto perform a method comprising: identifying a first location of themobile computing device that implements a map navigation tool, the firstlocation being an off-route location relative to a route defined by themap navigation tool, wherein the first location is outside a buffer areaassociated with a start location of the route; suppressing off-routefeedback during movement of the mobile computing device to a secondlocation, the second location of the mobile computing device being anon-route location; changing idle timer reset functionality of the mobilecomputing device for the second location of the mobile computing devicerelative to the first location of the mobile computing device; changingdynamic zoom functionality of the map navigation tool for the secondlocation of the mobile computing device relative to the first locationof the mobile computing device; changing orientation of a view of a mapin the map navigation tool for the second location of the mobilecomputing device relative to the first location of the mobile computingdevice; and changing tap input functionality of the map navigation toolfor the second location of the mobile computing device relative to thefirst location of the mobile computing device.